 /* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#import <Foundation/Foundation.h>
#import <JDCloudOCSDKVpc/VpcModel.h>

@implementation AssociateElasticIpSpec
-(id) initWithElasticIpId:(NSString*) elasticIpId
      privateIpAddress:(NSString*)privateIpAddress
      elasticIpAddress:(NSString*)elasticIpAddress { 
     self.elasticIpId = elasticIpId;               
     self.privateIpAddress = privateIpAddress;               
     self.elasticIpAddress = elasticIpAddress;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self elasticIpId])
    {
        [result setValue:[self elasticIpId] forKey:@"elasticIpId"];
    }
    if([self privateIpAddress])
    {
        [result setValue:[self privateIpAddress] forKey:@"privateIpAddress"];
    }
    if([self elasticIpAddress])
    {
        [result setValue:[self elasticIpAddress] forKey:@"elasticIpAddress"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.elasticIpId = [dictionary objectForKey:@"elasticIpId"];
    self.privateIpAddress = [dictionary objectForKey:@"privateIpAddress"];
    self.elasticIpAddress = [dictionary objectForKey:@"elasticIpAddress"];
    return self;
}
 @end
@implementation RouteTableRule
-(id) initWithRuleId:(NSString*) ruleId
      priority:(NSNumber*)priority
      nextHopType:(NSString*)nextHopType
      nextHopId:(NSString*)nextHopId
      addressPrefix:(NSString*)addressPrefix { 
     self.ruleId = ruleId;               
     self.priority = priority;               
     self.nextHopType = nextHopType;               
     self.nextHopId = nextHopId;               
     self.addressPrefix = addressPrefix;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    if([self nextHopType])
    {
        [result setValue:[self nextHopType] forKey:@"nextHopType"];
    }
    if([self nextHopId])
    {
        [result setValue:[self nextHopId] forKey:@"nextHopId"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.priority = [dictionary objectForKey:@"priority"];
    self.nextHopType = [dictionary objectForKey:@"nextHopType"];
    self.nextHopId = [dictionary objectForKey:@"nextHopId"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    return self;
}
 @end
@implementation ModifyRouteTableRules
-(id) initWithRuleId:(NSString*) ruleId
      priority:(NSNumber*)priority
      nextHopType:(NSString*)nextHopType
      nextHopId:(NSString*)nextHopId
      addressPrefix:(NSString*)addressPrefix { 
     self.ruleId = ruleId;               
     self.priority = priority;               
     self.nextHopType = nextHopType;               
     self.nextHopId = nextHopId;               
     self.addressPrefix = addressPrefix;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    if([self nextHopType])
    {
        [result setValue:[self nextHopType] forKey:@"nextHopType"];
    }
    if([self nextHopId])
    {
        [result setValue:[self nextHopId] forKey:@"nextHopId"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.priority = [dictionary objectForKey:@"priority"];
    self.nextHopType = [dictionary objectForKey:@"nextHopType"];
    self.nextHopId = [dictionary objectForKey:@"nextHopId"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    return self;
}
 @end
@implementation ModifyVpcPeeringSpec
-(id) initWithVpcPeeringName:(NSString*) vpcPeeringName
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcPeeringName = vpcPeeringName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcPeeringName])
    {
        [result setValue:[self vpcPeeringName] forKey:@"vpcPeeringName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcPeeringName = [dictionary objectForKey:@"vpcPeeringName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation DisassociateRouteTableSpec
-(id) initWithSubnetId:(NSString*) subnetId { 
     self.subnetId = subnetId;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self subnetId])
    {
        [result setValue:[self subnetId] forKey:@"subnetId"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.subnetId = [dictionary objectForKey:@"subnetId"];
    return self;
}
 @end
@implementation ModifyVpcSpec
-(id) initWithVpcName:(NSString*) vpcName
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcName = vpcName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcName])
    {
        [result setValue:[self vpcName] forKey:@"vpcName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcName = [dictionary objectForKey:@"vpcName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation AddRouteTableRules
-(id) initWithNextHopType:(NSString*) nextHopType
      nextHopId:(NSString*)nextHopId
      addressPrefix:(NSString*)addressPrefix
      priority:(NSNumber*)priority { 
     self.nextHopType = nextHopType;               
     self.nextHopId = nextHopId;               
     self.addressPrefix = addressPrefix;               
     self.priority = priority;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self nextHopType])
    {
        [result setValue:[self nextHopType] forKey:@"nextHopType"];
    }
    if([self nextHopId])
    {
        [result setValue:[self nextHopId] forKey:@"nextHopId"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.nextHopType = [dictionary objectForKey:@"nextHopType"];
    self.nextHopId = [dictionary objectForKey:@"nextHopId"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.priority = [dictionary objectForKey:@"priority"];
    return self;
}
 @end
@implementation AssociateRouteTableSpec
-(id) initWithSubnetIds:(NSArray<NSString*>*) subnetIds { 
     self.subnetIds = subnetIds;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self subnetIds])
    {
        [result setValue:[self subnetIds] forKey:@"subnetIds"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.subnetIds = [dictionary objectForKey:@"subnetIds"];
    return self;
}
 @end
@implementation VpcQuota
-(id) initWithType:(NSString*) type
      parentResourceId:(NSString*)parentResourceId
      maxLimit:(NSNumber*)maxLimit
      count:(NSNumber*)count { 
     self.type = type;               
     self.parentResourceId = parentResourceId;               
     self.maxLimit = maxLimit;               
     self.count = count;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self type])
    {
        [result setValue:[self type] forKey:@"type"];
    }
    if([self parentResourceId])
    {
        [result setValue:[self parentResourceId] forKey:@"parentResourceId"];
    }
    if([self maxLimit])
    {
        [result setValue:[self maxLimit] forKey:@"maxLimit"];
    }
    if([self count])
    {
        [result setValue:[self count] forKey:@"count"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.type = [dictionary objectForKey:@"type"];
    self.parentResourceId = [dictionary objectForKey:@"parentResourceId"];
    self.maxLimit = [dictionary objectForKey:@"maxLimit"];
    self.count = [dictionary objectForKey:@"count"];
    return self;
}
 @end
@implementation SubnetSpec
-(id) initWithVpcId:(NSString*) vpcId
      subnetName:(NSString*)subnetName
      addressPrefix:(NSString*)addressPrefix
      routeTableId:(NSString*)routeTableId
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcId = vpcId;               
     self.subnetName = subnetName;               
     self.addressPrefix = addressPrefix;               
     self.routeTableId = routeTableId;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self subnetName])
    {
        [result setValue:[self subnetName] forKey:@"subnetName"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self routeTableId])
    {
        [result setValue:[self routeTableId] forKey:@"routeTableId"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.subnetName = [dictionary objectForKey:@"subnetName"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.routeTableId = [dictionary objectForKey:@"routeTableId"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation NetworkInterfacePrivateIp
-(id) initWithPrivateIpAddress:(NSString*) privateIpAddress
      elasticIpId:(NSString*)elasticIpId
      elasticIpAddress:(NSString*)elasticIpAddress { 
     self.privateIpAddress = privateIpAddress;               
     self.elasticIpId = elasticIpId;               
     self.elasticIpAddress = elasticIpAddress;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self privateIpAddress])
    {
        [result setValue:[self privateIpAddress] forKey:@"privateIpAddress"];
    }
    if([self elasticIpId])
    {
        [result setValue:[self elasticIpId] forKey:@"elasticIpId"];
    }
    if([self elasticIpAddress])
    {
        [result setValue:[self elasticIpAddress] forKey:@"elasticIpAddress"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.privateIpAddress = [dictionary objectForKey:@"privateIpAddress"];
    self.elasticIpId = [dictionary objectForKey:@"elasticIpId"];
    self.elasticIpAddress = [dictionary objectForKey:@"elasticIpAddress"];
    return self;
}
 @end
@implementation Subnet
-(id) initWithSubnetId:(NSString*) subnetId
      subnetName:(NSString*)subnetName
      vpcId:(NSString*)vpcId
      addressPrefix:(NSString*)addressPrefix
      availableIpCount:(NSNumber*)availableIpCount
      descriptionValue:(NSString*)descriptionValue
      routeTableId:(NSString*)routeTableId
      aclId:(NSString*)aclId
      startIp:(NSString*)startIp
      endIp:(NSString*)endIp
      createdTime:(NSString*)createdTime { 
     self.subnetId = subnetId;               
     self.subnetName = subnetName;               
     self.vpcId = vpcId;               
     self.addressPrefix = addressPrefix;               
     self.availableIpCount = availableIpCount;               
     self.descriptionValue = descriptionValue;               
     self.routeTableId = routeTableId;               
     self.aclId = aclId;               
     self.startIp = startIp;               
     self.endIp = endIp;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self subnetId])
    {
        [result setValue:[self subnetId] forKey:@"subnetId"];
    }
    if([self subnetName])
    {
        [result setValue:[self subnetName] forKey:@"subnetName"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self availableIpCount])
    {
        [result setValue:[self availableIpCount] forKey:@"availableIpCount"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self routeTableId])
    {
        [result setValue:[self routeTableId] forKey:@"routeTableId"];
    }
    if([self aclId])
    {
        [result setValue:[self aclId] forKey:@"aclId"];
    }
    if([self startIp])
    {
        [result setValue:[self startIp] forKey:@"startIp"];
    }
    if([self endIp])
    {
        [result setValue:[self endIp] forKey:@"endIp"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.subnetId = [dictionary objectForKey:@"subnetId"];
    self.subnetName = [dictionary objectForKey:@"subnetName"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.availableIpCount = [dictionary objectForKey:@"availableIpCount"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.routeTableId = [dictionary objectForKey:@"routeTableId"];
    self.aclId = [dictionary objectForKey:@"aclId"];
    self.startIp = [dictionary objectForKey:@"startIp"];
    self.endIp = [dictionary objectForKey:@"endIp"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation ModifyNetworkAclRuleSpec
-(id) initWithRuleId:(NSString*) ruleId
      protocol:(NSString*)protocol
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      addressPrefix:(NSString*)addressPrefix
      ruleAction:(NSString*)ruleAction
      priority:(NSNumber*)priority
      descriptionValue:(NSString*)descriptionValue { 
     self.ruleId = ruleId;               
     self.protocol = protocol;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.addressPrefix = addressPrefix;               
     self.ruleAction = ruleAction;               
     self.priority = priority;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self ruleAction])
    {
        [result setValue:[self ruleAction] forKey:@"ruleAction"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.ruleAction = [dictionary objectForKey:@"ruleAction"];
    self.priority = [dictionary objectForKey:@"priority"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation SecurityGroupRule
-(id) initWithRuleId:(NSString*) ruleId
      direction:(NSNumber*)direction
      protocol:(NSNumber*)protocol
      addressPrefix:(NSString*)addressPrefix
      ipVersion:(NSNumber*)ipVersion
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      createdTime:(NSString*)createdTime
      descriptionValue:(NSString*)descriptionValue { 
     self.ruleId = ruleId;               
     self.direction = direction;               
     self.protocol = protocol;               
     self.addressPrefix = addressPrefix;               
     self.ipVersion = ipVersion;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.createdTime = createdTime;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self direction])
    {
        [result setValue:[self direction] forKey:@"direction"];
    }
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self ipVersion])
    {
        [result setValue:[self ipVersion] forKey:@"ipVersion"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.direction = [dictionary objectForKey:@"direction"];
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.ipVersion = [dictionary objectForKey:@"ipVersion"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifyQuotaSpec
-(id) initWithType:(NSString*) type
      parentResourceId:(NSString*)parentResourceId
      maxLimit:(NSNumber*)maxLimit { 
     self.type = type;               
     self.parentResourceId = parentResourceId;               
     self.maxLimit = maxLimit;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self type])
    {
        [result setValue:[self type] forKey:@"type"];
    }
    if([self parentResourceId])
    {
        [result setValue:[self parentResourceId] forKey:@"parentResourceId"];
    }
    if([self maxLimit])
    {
        [result setValue:[self maxLimit] forKey:@"maxLimit"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.type = [dictionary objectForKey:@"type"];
    self.parentResourceId = [dictionary objectForKey:@"parentResourceId"];
    self.maxLimit = [dictionary objectForKey:@"maxLimit"];
    return self;
}
 @end
@implementation NetworkAclRule
-(id) initWithRuleId:(NSString*) ruleId
      protocol:(NSString*)protocol
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      direction:(NSString*)direction
      addressPrefix:(NSString*)addressPrefix
      ruleAction:(NSString*)ruleAction
      priority:(NSNumber*)priority
      descriptionValue:(NSString*)descriptionValue
      createdTime:(NSString*)createdTime { 
     self.ruleId = ruleId;               
     self.protocol = protocol;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.direction = direction;               
     self.addressPrefix = addressPrefix;               
     self.ruleAction = ruleAction;               
     self.priority = priority;               
     self.descriptionValue = descriptionValue;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self direction])
    {
        [result setValue:[self direction] forKey:@"direction"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self ruleAction])
    {
        [result setValue:[self ruleAction] forKey:@"ruleAction"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.direction = [dictionary objectForKey:@"direction"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.ruleAction = [dictionary objectForKey:@"ruleAction"];
    self.priority = [dictionary objectForKey:@"priority"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation NetworkAclSpec
-(id) initWithVpcId:(NSString*) vpcId
      networkAclName:(NSString*)networkAclName
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcId = vpcId;               
     self.networkAclName = networkAclName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self networkAclName])
    {
        [result setValue:[self networkAclName] forKey:@"networkAclName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.networkAclName = [dictionary objectForKey:@"networkAclName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation AddSecurityGroupRules
-(id) initWithProtocol:(NSNumber*) protocol
      direction:(NSNumber*)direction
      addressPrefix:(NSString*)addressPrefix
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      descriptionValue:(NSString*)descriptionValue { 
     self.protocol = protocol;               
     self.direction = direction;               
     self.addressPrefix = addressPrefix;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self direction])
    {
        [result setValue:[self direction] forKey:@"direction"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.direction = [dictionary objectForKey:@"direction"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifyNetworkAclSpec
-(id) initWithNetworkAclName:(NSString*) networkAclName
      descriptionValue:(NSString*)descriptionValue { 
     self.networkAclName = networkAclName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkAclName])
    {
        [result setValue:[self networkAclName] forKey:@"networkAclName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkAclName = [dictionary objectForKey:@"networkAclName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation NetworkInterfaceSpec
-(id) initWithSubnetId:(NSString*) subnetId
      az:(NSString*)az
      networkInterfaceName:(NSString*)networkInterfaceName
      primaryIpAddress:(NSString*)primaryIpAddress
      secondaryIpAddresses:(NSArray<NSString*>*)secondaryIpAddresses
      secondaryIpCount:(NSNumber*)secondaryIpCount
      securityGroups:(NSArray<NSString*>*)securityGroups
      sanityCheck:(NSNumber*)sanityCheck
      descriptionValue:(NSString*)descriptionValue { 
     self.subnetId = subnetId;               
     self.az = az;               
     self.networkInterfaceName = networkInterfaceName;               
     self.primaryIpAddress = primaryIpAddress;               
     self.secondaryIpAddresses = secondaryIpAddresses;               
     self.secondaryIpCount = secondaryIpCount;               
     self.securityGroups = securityGroups;               
     self.sanityCheck = sanityCheck;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self subnetId])
    {
        [result setValue:[self subnetId] forKey:@"subnetId"];
    }
    if([self az])
    {
        [result setValue:[self az] forKey:@"az"];
    }
    if([self networkInterfaceName])
    {
        [result setValue:[self networkInterfaceName] forKey:@"networkInterfaceName"];
    }
    if([self primaryIpAddress])
    {
        [result setValue:[self primaryIpAddress] forKey:@"primaryIpAddress"];
    }
    if([self secondaryIpAddresses])
    {
        [result setValue:[self secondaryIpAddresses] forKey:@"secondaryIpAddresses"];
    }
    if([self secondaryIpCount])
    {
        [result setValue:[self secondaryIpCount] forKey:@"secondaryIpCount"];
    }
    if([self securityGroups])
    {
        [result setValue:[self securityGroups] forKey:@"securityGroups"];
    }
    if([self sanityCheck])
    {
        [result setValue:[self sanityCheck] forKey:@"sanityCheck"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.subnetId = [dictionary objectForKey:@"subnetId"];
    self.az = [dictionary objectForKey:@"az"];
    self.networkInterfaceName = [dictionary objectForKey:@"networkInterfaceName"];
    self.primaryIpAddress = [dictionary objectForKey:@"primaryIpAddress"];
    self.secondaryIpAddresses = [dictionary objectForKey:@"secondaryIpAddresses"];
    self.secondaryIpCount = [dictionary objectForKey:@"secondaryIpCount"];
    self.securityGroups = [dictionary objectForKey:@"securityGroups"];
    self.sanityCheck = [dictionary objectForKey:@"sanityCheck"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation DisassociateElasticIpSpec
-(id) initWithElasticIpId:(NSString*) elasticIpId
      elasticIpAddress:(NSString*)elasticIpAddress { 
     self.elasticIpId = elasticIpId;               
     self.elasticIpAddress = elasticIpAddress;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self elasticIpId])
    {
        [result setValue:[self elasticIpId] forKey:@"elasticIpId"];
    }
    if([self elasticIpAddress])
    {
        [result setValue:[self elasticIpAddress] forKey:@"elasticIpAddress"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.elasticIpId = [dictionary objectForKey:@"elasticIpId"];
    self.elasticIpAddress = [dictionary objectForKey:@"elasticIpAddress"];
    return self;
}
 @end
@implementation CreateVpcPeeringSpec
-(id) initWithVpcPeeringName:(NSString*) vpcPeeringName
      vpcId:(NSString*)vpcId
      remoteVpcId:(NSString*)remoteVpcId
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcPeeringName = vpcPeeringName;               
     self.vpcId = vpcId;               
     self.remoteVpcId = remoteVpcId;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcPeeringName])
    {
        [result setValue:[self vpcPeeringName] forKey:@"vpcPeeringName"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self remoteVpcId])
    {
        [result setValue:[self remoteVpcId] forKey:@"remoteVpcId"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcPeeringName = [dictionary objectForKey:@"vpcPeeringName"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.remoteVpcId = [dictionary objectForKey:@"remoteVpcId"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifySecurityGroupRules
-(id) initWithRuleId:(NSString*) ruleId
      protocol:(NSNumber*)protocol
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      addressPrefix:(NSString*)addressPrefix
      descriptionValue:(NSString*)descriptionValue { 
     self.ruleId = ruleId;               
     self.protocol = protocol;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.addressPrefix = addressPrefix;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self ruleId])
    {
        [result setValue:[self ruleId] forKey:@"ruleId"];
    }
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.ruleId = [dictionary objectForKey:@"ruleId"];
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation UnassignSecondaryIpsSpec
-(id) initWithSecondaryIps:(NSArray<NSString*>*) secondaryIps { 
     self.secondaryIps = secondaryIps;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self secondaryIps])
    {
        [result setValue:[self secondaryIps] forKey:@"secondaryIps"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.secondaryIps = [dictionary objectForKey:@"secondaryIps"];
    return self;
}
 @end
@implementation RouteTableSpec
-(id) initWithVpcId:(NSString*) vpcId
      routeTableName:(NSString*)routeTableName
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcId = vpcId;               
     self.routeTableName = routeTableName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self routeTableName])
    {
        [result setValue:[self routeTableName] forKey:@"routeTableName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.routeTableName = [dictionary objectForKey:@"routeTableName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifyNetworkSecurityGroupSpec
-(id) initWithNetworkSecurityGroupName:(NSString*) networkSecurityGroupName
      descriptionValue:(NSString*)descriptionValue { 
     self.networkSecurityGroupName = networkSecurityGroupName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkSecurityGroupName])
    {
        [result setValue:[self networkSecurityGroupName] forKey:@"networkSecurityGroupName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkSecurityGroupName = [dictionary objectForKey:@"networkSecurityGroupName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation AddNetworkAclRuleSpec
-(id) initWithProtocol:(NSString*) protocol
      fromPort:(NSNumber*)fromPort
      toPort:(NSNumber*)toPort
      direction:(NSString*)direction
      addressPrefix:(NSString*)addressPrefix
      ruleAction:(NSString*)ruleAction
      priority:(NSNumber*)priority
      descriptionValue:(NSString*)descriptionValue { 
     self.protocol = protocol;               
     self.fromPort = fromPort;               
     self.toPort = toPort;               
     self.direction = direction;               
     self.addressPrefix = addressPrefix;               
     self.ruleAction = ruleAction;               
     self.priority = priority;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self protocol])
    {
        [result setValue:[self protocol] forKey:@"protocol"];
    }
    if([self fromPort])
    {
        [result setValue:[self fromPort] forKey:@"fromPort"];
    }
    if([self toPort])
    {
        [result setValue:[self toPort] forKey:@"toPort"];
    }
    if([self direction])
    {
        [result setValue:[self direction] forKey:@"direction"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self ruleAction])
    {
        [result setValue:[self ruleAction] forKey:@"ruleAction"];
    }
    if([self priority])
    {
        [result setValue:[self priority] forKey:@"priority"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.protocol = [dictionary objectForKey:@"protocol"];
    self.fromPort = [dictionary objectForKey:@"fromPort"];
    self.toPort = [dictionary objectForKey:@"toPort"];
    self.direction = [dictionary objectForKey:@"direction"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.ruleAction = [dictionary objectForKey:@"ruleAction"];
    self.priority = [dictionary objectForKey:@"priority"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifySubnetSpec
-(id) initWithSubnetName:(NSString*) subnetName
      descriptionValue:(NSString*)descriptionValue { 
     self.subnetName = subnetName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self subnetName])
    {
        [result setValue:[self subnetName] forKey:@"subnetName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.subnetName = [dictionary objectForKey:@"subnetName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation AssignSecondaryIpsSpec
-(id) initWithForce:(NSNumber*) force
      secondaryIps:(NSArray<NSString*>*)secondaryIps
      secondaryIpCount:(NSNumber*)secondaryIpCount { 
     self.force = force;               
     self.secondaryIps = secondaryIps;               
     self.secondaryIpCount = secondaryIpCount;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self force])
    {
        [result setValue:[self force] forKey:@"force"];
    }
    if([self secondaryIps])
    {
        [result setValue:[self secondaryIps] forKey:@"secondaryIps"];
    }
    if([self secondaryIpCount])
    {
        [result setValue:[self secondaryIpCount] forKey:@"secondaryIpCount"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.force = [dictionary objectForKey:@"force"];
    self.secondaryIps = [dictionary objectForKey:@"secondaryIps"];
    self.secondaryIpCount = [dictionary objectForKey:@"secondaryIpCount"];
    return self;
}
 @end
@implementation ModifyRouteTableSpec
-(id) initWithRouteTableName:(NSString*) routeTableName
      descriptionValue:(NSString*)descriptionValue { 
     self.routeTableName = routeTableName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self routeTableName])
    {
        [result setValue:[self routeTableName] forKey:@"routeTableName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.routeTableName = [dictionary objectForKey:@"routeTableName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation VpcSpec
-(id) initWithVpcName:(NSString*) vpcName
      addressPrefix:(NSString*)addressPrefix
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcName = vpcName;               
     self.addressPrefix = addressPrefix;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcName])
    {
        [result setValue:[self vpcName] forKey:@"vpcName"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcName = [dictionary objectForKey:@"vpcName"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifyElasticIpSpec
-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps { 
     self.bandwidthMbps = bandwidthMbps;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self bandwidthMbps])
    {
        [result setValue:[self bandwidthMbps] forKey:@"bandwidthMbps"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.bandwidthMbps = [dictionary objectForKey:@"bandwidthMbps"];
    return self;
}
 @end
@implementation VpcPeeringVpcInfo
-(id) initWithVpcId:(NSString*) vpcId
      vpcName:(NSString*)vpcName
      addressPrefix:(NSArray<NSString*>*)addressPrefix { 
     self.vpcId = vpcId;               
     self.vpcName = vpcName;               
     self.addressPrefix = addressPrefix;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self vpcName])
    {
        [result setValue:[self vpcName] forKey:@"vpcName"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.vpcName = [dictionary objectForKey:@"vpcName"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    return self;
}
 @end
@implementation NetworkSecurityGroupSpec
-(id) initWithVpcId:(NSString*) vpcId
      networkSecurityGroupName:(NSString*)networkSecurityGroupName
      descriptionValue:(NSString*)descriptionValue { 
     self.vpcId = vpcId;               
     self.networkSecurityGroupName = networkSecurityGroupName;               
     self.descriptionValue = descriptionValue;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self networkSecurityGroupName])
    {
        [result setValue:[self networkSecurityGroupName] forKey:@"networkSecurityGroupName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.networkSecurityGroupName = [dictionary objectForKey:@"networkSecurityGroupName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    return self;
}
 @end
@implementation ModifyNetworkInterfaceSpec
-(id) initWithNetworkInterfaceName:(NSString*) networkInterfaceName
      descriptionValue:(NSString*)descriptionValue
      securityGroups:(NSArray<NSString*>*)securityGroups { 
     self.networkInterfaceName = networkInterfaceName;               
     self.descriptionValue = descriptionValue;               
     self.securityGroups = securityGroups;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkInterfaceName])
    {
        [result setValue:[self networkInterfaceName] forKey:@"networkInterfaceName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self securityGroups])
    {
        [result setValue:[self securityGroups] forKey:@"securityGroups"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkInterfaceName = [dictionary objectForKey:@"networkInterfaceName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.securityGroups = [dictionary objectForKey:@"securityGroups"];
    return self;
}
 @end
@implementation Segment
-(id) initWithSegmentId:(NSString*) segmentId
      segmentName:(NSString*)segmentName
      descriptionValue:(NSString*)descriptionValue
      addressPrefix:(NSString*)addressPrefix
      availableIpCount:(NSNumber*)availableIpCount
      provider:(NSString*)provider
      startIp:(NSString*)startIp
      endIp:(NSString*)endIp { 
     self.segmentId = segmentId;               
     self.segmentName = segmentName;               
     self.descriptionValue = descriptionValue;               
     self.addressPrefix = addressPrefix;               
     self.availableIpCount = availableIpCount;               
     self.provider = provider;               
     self.startIp = startIp;               
     self.endIp = endIp;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self segmentId])
    {
        [result setValue:[self segmentId] forKey:@"segmentId"];
    }
    if([self segmentName])
    {
        [result setValue:[self segmentName] forKey:@"segmentName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self availableIpCount])
    {
        [result setValue:[self availableIpCount] forKey:@"availableIpCount"];
    }
    if([self provider])
    {
        [result setValue:[self provider] forKey:@"provider"];
    }
    if([self startIp])
    {
        [result setValue:[self startIp] forKey:@"startIp"];
    }
    if([self endIp])
    {
        [result setValue:[self endIp] forKey:@"endIp"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.segmentId = [dictionary objectForKey:@"segmentId"];
    self.segmentName = [dictionary objectForKey:@"segmentName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.availableIpCount = [dictionary objectForKey:@"availableIpCount"];
    self.provider = [dictionary objectForKey:@"provider"];
    self.startIp = [dictionary objectForKey:@"startIp"];
    self.endIp = [dictionary objectForKey:@"endIp"];
    return self;
}
 @end
@implementation RouteTable
-(id) initWithRouteTableId:(NSString*) routeTableId
      routeTableName:(NSString*)routeTableName
      routeTableType:(NSString*)routeTableType
      descriptionValue:(NSString*)descriptionValue
      vpcId:(NSString*)vpcId
      routeTableRules:(NSArray<RouteTableRule*>*)routeTableRules
      subnetIds:(NSArray<NSString*>*)subnetIds
      createdTime:(NSString*)createdTime { 
     self.routeTableId = routeTableId;               
     self.routeTableName = routeTableName;               
     self.routeTableType = routeTableType;               
     self.descriptionValue = descriptionValue;               
     self.vpcId = vpcId;               
     self.routeTableRules = routeTableRules;               
     self.subnetIds = subnetIds;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self routeTableId])
    {
        [result setValue:[self routeTableId] forKey:@"routeTableId"];
    }
    if([self routeTableName])
    {
        [result setValue:[self routeTableName] forKey:@"routeTableName"];
    }
    if([self routeTableType])
    {
        [result setValue:[self routeTableType] forKey:@"routeTableType"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self routeTableRules])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self routeTableRules] count]; i++) {
            RouteTableRule* item = [[self routeTableRules] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"routeTableRules"];
    }
    if([self subnetIds])
    {
        [result setValue:[self subnetIds] forKey:@"subnetIds"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.routeTableId = [dictionary objectForKey:@"routeTableId"];
    self.routeTableName = [dictionary objectForKey:@"routeTableName"];
    self.routeTableType = [dictionary objectForKey:@"routeTableType"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    NSArray* routeTableRulesArray = [dictionary objectForKey:@"routeTableRules"];
    if(routeTableRulesArray&&![routeTableRulesArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [routeTableRulesArray count];i++)
        {
            RouteTableRule* item = [[RouteTableRule alloc]initWithDic:[routeTableRulesArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.routeTableRules = propertyArray;
    }
    self.subnetIds = [dictionary objectForKey:@"subnetIds"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation AddRouteTableRulesSpec
-(id) initWithRouteTableRuleSpecs:(NSArray<AddRouteTableRules*>*) routeTableRuleSpecs { 
     self.routeTableRuleSpecs = routeTableRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self routeTableRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self routeTableRuleSpecs] count]; i++) {
            AddRouteTableRules* item = [[self routeTableRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"routeTableRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* routeTableRuleSpecsArray = [dictionary objectForKey:@"routeTableRuleSpecs"];
    if(routeTableRuleSpecsArray&&![routeTableRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [routeTableRuleSpecsArray count];i++)
        {
            AddRouteTableRules* item = [[AddRouteTableRules alloc]initWithDic:[routeTableRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.routeTableRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation NetworkInterface
-(id) initWithNetworkInterfaceName:(NSString*) networkInterfaceName
      networkInterfaceId:(NSString*)networkInterfaceId
      az:(NSString*)az
      role:(NSString*)role
      macAddress:(NSString*)macAddress
      vpcId:(NSString*)vpcId
      subnetId:(NSString*)subnetId
      networkSecurityGroupIds:(NSArray<NSString*>*)networkSecurityGroupIds
      sanityCheck:(NSNumber*)sanityCheck
      primaryIp:(NetworkInterfacePrivateIp*)primaryIp
      secondaryIps:(NSArray<NetworkInterfacePrivateIp*>*)secondaryIps
      instanceType:(NSString*)instanceType
      instanceId:(NSString*)instanceId
      instanceOwnerId:(NSString*)instanceOwnerId
      deviceIndex:(NSNumber*)deviceIndex
      descriptionValue:(NSString*)descriptionValue
      createdTime:(NSString*)createdTime { 
     self.networkInterfaceName = networkInterfaceName;               
     self.networkInterfaceId = networkInterfaceId;               
     self.az = az;               
     self.role = role;               
     self.macAddress = macAddress;               
     self.vpcId = vpcId;               
     self.subnetId = subnetId;               
     self.networkSecurityGroupIds = networkSecurityGroupIds;               
     self.sanityCheck = sanityCheck;               
     self.primaryIp = primaryIp;               
     self.secondaryIps = secondaryIps;               
     self.instanceType = instanceType;               
     self.instanceId = instanceId;               
     self.instanceOwnerId = instanceOwnerId;               
     self.deviceIndex = deviceIndex;               
     self.descriptionValue = descriptionValue;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkInterfaceName])
    {
        [result setValue:[self networkInterfaceName] forKey:@"networkInterfaceName"];
    }
    if([self networkInterfaceId])
    {
        [result setValue:[self networkInterfaceId] forKey:@"networkInterfaceId"];
    }
    if([self az])
    {
        [result setValue:[self az] forKey:@"az"];
    }
    if([self role])
    {
        [result setValue:[self role] forKey:@"role"];
    }
    if([self macAddress])
    {
        [result setValue:[self macAddress] forKey:@"macAddress"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self subnetId])
    {
        [result setValue:[self subnetId] forKey:@"subnetId"];
    }
    if([self networkSecurityGroupIds])
    {
        [result setValue:[self networkSecurityGroupIds] forKey:@"networkSecurityGroupIds"];
    }
    if([self sanityCheck])
    {
        [result setValue:[self sanityCheck] forKey:@"sanityCheck"];
    }
    if([self primaryIp])
    {
        [result setValue:[[self primaryIp] dictionary]forKey:@"primaryIp"];
    }
    if([self secondaryIps])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self secondaryIps] count]; i++) {
            NetworkInterfacePrivateIp* item = [[self secondaryIps] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"secondaryIps"];
    }
    if([self instanceType])
    {
        [result setValue:[self instanceType] forKey:@"instanceType"];
    }
    if([self instanceId])
    {
        [result setValue:[self instanceId] forKey:@"instanceId"];
    }
    if([self instanceOwnerId])
    {
        [result setValue:[self instanceOwnerId] forKey:@"instanceOwnerId"];
    }
    if([self deviceIndex])
    {
        [result setValue:[self deviceIndex] forKey:@"deviceIndex"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkInterfaceName = [dictionary objectForKey:@"networkInterfaceName"];
    self.networkInterfaceId = [dictionary objectForKey:@"networkInterfaceId"];
    self.az = [dictionary objectForKey:@"az"];
    self.role = [dictionary objectForKey:@"role"];
    self.macAddress = [dictionary objectForKey:@"macAddress"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.subnetId = [dictionary objectForKey:@"subnetId"];
    self.networkSecurityGroupIds = [dictionary objectForKey:@"networkSecurityGroupIds"];
    self.sanityCheck = [dictionary objectForKey:@"sanityCheck"];
    self.primaryIp = [[NetworkInterfacePrivateIp alloc]initWithDic:[dictionary objectForKey:@"primaryIp"]];
    NSArray* secondaryIpsArray = [dictionary objectForKey:@"secondaryIps"];
    if(secondaryIpsArray&&![secondaryIpsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [secondaryIpsArray count];i++)
        {
            NetworkInterfacePrivateIp* item = [[NetworkInterfacePrivateIp alloc]initWithDic:[secondaryIpsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.secondaryIps = propertyArray;
    }
    self.instanceType = [dictionary objectForKey:@"instanceType"];
    self.instanceId = [dictionary objectForKey:@"instanceId"];
    self.instanceOwnerId = [dictionary objectForKey:@"instanceOwnerId"];
    self.deviceIndex = [dictionary objectForKey:@"deviceIndex"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation ModifyNetworkAclRulesSpec
-(id) initWithModifyNetworkAclRuleSpecs:(NSArray<ModifyNetworkAclRuleSpec*>*) modifyNetworkAclRuleSpecs { 
     self.modifyNetworkAclRuleSpecs = modifyNetworkAclRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self modifyNetworkAclRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self modifyNetworkAclRuleSpecs] count]; i++) {
            ModifyNetworkAclRuleSpec* item = [[self modifyNetworkAclRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"modifyNetworkAclRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* modifyNetworkAclRuleSpecsArray = [dictionary objectForKey:@"modifyNetworkAclRuleSpecs"];
    if(modifyNetworkAclRuleSpecsArray&&![modifyNetworkAclRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [modifyNetworkAclRuleSpecsArray count];i++)
        {
            ModifyNetworkAclRuleSpec* item = [[ModifyNetworkAclRuleSpec alloc]initWithDic:[modifyNetworkAclRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.modifyNetworkAclRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation ElasticIp
-(id) initWithElasticIpId:(NSString*) elasticIpId
      elasticIpAddress:(NSString*)elasticIpAddress
      bandwidthMbps:(NSNumber*)bandwidthMbps
      provider:(NSString*)provider
      privateIpAddress:(NSString*)privateIpAddress
      networkInterfaceId:(NSString*)networkInterfaceId
      instanceId:(NSString*)instanceId
      instanceType:(NSString*)instanceType
      charge:(Charge*)charge
      createdTime:(NSString*)createdTime
      az:(NSString*)az { 
     self.elasticIpId = elasticIpId;               
     self.elasticIpAddress = elasticIpAddress;               
     self.bandwidthMbps = bandwidthMbps;               
     self.provider = provider;               
     self.privateIpAddress = privateIpAddress;               
     self.networkInterfaceId = networkInterfaceId;               
     self.instanceId = instanceId;               
     self.instanceType = instanceType;               
     self.charge = charge;               
     self.createdTime = createdTime;               
     self.az = az;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self elasticIpId])
    {
        [result setValue:[self elasticIpId] forKey:@"elasticIpId"];
    }
    if([self elasticIpAddress])
    {
        [result setValue:[self elasticIpAddress] forKey:@"elasticIpAddress"];
    }
    if([self bandwidthMbps])
    {
        [result setValue:[self bandwidthMbps] forKey:@"bandwidthMbps"];
    }
    if([self provider])
    {
        [result setValue:[self provider] forKey:@"provider"];
    }
    if([self privateIpAddress])
    {
        [result setValue:[self privateIpAddress] forKey:@"privateIpAddress"];
    }
    if([self networkInterfaceId])
    {
        [result setValue:[self networkInterfaceId] forKey:@"networkInterfaceId"];
    }
    if([self instanceId])
    {
        [result setValue:[self instanceId] forKey:@"instanceId"];
    }
    if([self instanceType])
    {
        [result setValue:[self instanceType] forKey:@"instanceType"];
    }
    if([self charge])
    {
        [result setValue:[[self charge] dictionary]forKey:@"charge"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    if([self az])
    {
        [result setValue:[self az] forKey:@"az"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.elasticIpId = [dictionary objectForKey:@"elasticIpId"];
    self.elasticIpAddress = [dictionary objectForKey:@"elasticIpAddress"];
    self.bandwidthMbps = [dictionary objectForKey:@"bandwidthMbps"];
    self.provider = [dictionary objectForKey:@"provider"];
    self.privateIpAddress = [dictionary objectForKey:@"privateIpAddress"];
    self.networkInterfaceId = [dictionary objectForKey:@"networkInterfaceId"];
    self.instanceId = [dictionary objectForKey:@"instanceId"];
    self.instanceType = [dictionary objectForKey:@"instanceType"];
    self.charge = [[Charge alloc]initWithDic:[dictionary objectForKey:@"charge"]];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    self.az = [dictionary objectForKey:@"az"];
    return self;
}
 @end
@implementation NetworkSecurityGroup
-(id) initWithNetworkSecurityGroupId:(NSString*) networkSecurityGroupId
      networkSecurityGroupName:(NSString*)networkSecurityGroupName
      descriptionValue:(NSString*)descriptionValue
      vpcId:(NSString*)vpcId
      securityGroupRules:(NSArray<SecurityGroupRule*>*)securityGroupRules
      createdTime:(NSString*)createdTime { 
     self.networkSecurityGroupId = networkSecurityGroupId;               
     self.networkSecurityGroupName = networkSecurityGroupName;               
     self.descriptionValue = descriptionValue;               
     self.vpcId = vpcId;               
     self.securityGroupRules = securityGroupRules;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkSecurityGroupId])
    {
        [result setValue:[self networkSecurityGroupId] forKey:@"networkSecurityGroupId"];
    }
    if([self networkSecurityGroupName])
    {
        [result setValue:[self networkSecurityGroupName] forKey:@"networkSecurityGroupName"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self securityGroupRules])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self securityGroupRules] count]; i++) {
            SecurityGroupRule* item = [[self securityGroupRules] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"securityGroupRules"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkSecurityGroupId = [dictionary objectForKey:@"networkSecurityGroupId"];
    self.networkSecurityGroupName = [dictionary objectForKey:@"networkSecurityGroupName"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    NSArray* securityGroupRulesArray = [dictionary objectForKey:@"securityGroupRules"];
    if(securityGroupRulesArray&&![securityGroupRulesArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [securityGroupRulesArray count];i++)
        {
            SecurityGroupRule* item = [[SecurityGroupRule alloc]initWithDic:[securityGroupRulesArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.securityGroupRules = propertyArray;
    }
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation ElasticIpSpec
-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps
      provider:(NSString*)provider
      chargeSpec:(ChargeSpec*)chargeSpec { 
     self.bandwidthMbps = bandwidthMbps;               
     self.provider = provider;               
     self.chargeSpec = chargeSpec;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self bandwidthMbps])
    {
        [result setValue:[self bandwidthMbps] forKey:@"bandwidthMbps"];
    }
    if([self provider])
    {
        [result setValue:[self provider] forKey:@"provider"];
    }
    if([self chargeSpec])
    {
        [result setValue:[[self chargeSpec] dictionary]forKey:@"chargeSpec"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.bandwidthMbps = [dictionary objectForKey:@"bandwidthMbps"];
    self.provider = [dictionary objectForKey:@"provider"];
    self.chargeSpec = [[ChargeSpec alloc]initWithDic:[dictionary objectForKey:@"chargeSpec"]];
    return self;
}
 @end
@implementation AddNetworkSecurityGroupRulesSpec
-(id) initWithNetworkSecurityGroupRuleSpecs:(NSArray<AddSecurityGroupRules*>*) networkSecurityGroupRuleSpecs { 
     self.networkSecurityGroupRuleSpecs = networkSecurityGroupRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkSecurityGroupRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self networkSecurityGroupRuleSpecs] count]; i++) {
            AddSecurityGroupRules* item = [[self networkSecurityGroupRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"networkSecurityGroupRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* networkSecurityGroupRuleSpecsArray = [dictionary objectForKey:@"networkSecurityGroupRuleSpecs"];
    if(networkSecurityGroupRuleSpecsArray&&![networkSecurityGroupRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [networkSecurityGroupRuleSpecsArray count];i++)
        {
            AddSecurityGroupRules* item = [[AddSecurityGroupRules alloc]initWithDic:[networkSecurityGroupRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.networkSecurityGroupRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation ModifySecurityGroupRuleSpec
-(id) initWithModifySecurityGroupRuleSpecs:(NSArray<ModifySecurityGroupRules*>*) modifySecurityGroupRuleSpecs { 
     self.modifySecurityGroupRuleSpecs = modifySecurityGroupRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self modifySecurityGroupRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self modifySecurityGroupRuleSpecs] count]; i++) {
            ModifySecurityGroupRules* item = [[self modifySecurityGroupRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"modifySecurityGroupRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* modifySecurityGroupRuleSpecsArray = [dictionary objectForKey:@"modifySecurityGroupRuleSpecs"];
    if(modifySecurityGroupRuleSpecsArray&&![modifySecurityGroupRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [modifySecurityGroupRuleSpecsArray count];i++)
        {
            ModifySecurityGroupRules* item = [[ModifySecurityGroupRules alloc]initWithDic:[modifySecurityGroupRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.modifySecurityGroupRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation NetworkAcl
-(id) initWithNetworkAclId:(NSString*) networkAclId
      networkAclName:(NSString*)networkAclName
      vpcId:(NSString*)vpcId
      networkAclRules:(NSArray<NetworkAclRule*>*)networkAclRules
      subnetIds:(NSArray<NSString*>*)subnetIds
      descriptionValue:(NSString*)descriptionValue
      createdTime:(NSString*)createdTime { 
     self.networkAclId = networkAclId;               
     self.networkAclName = networkAclName;               
     self.vpcId = vpcId;               
     self.networkAclRules = networkAclRules;               
     self.subnetIds = subnetIds;               
     self.descriptionValue = descriptionValue;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkAclId])
    {
        [result setValue:[self networkAclId] forKey:@"networkAclId"];
    }
    if([self networkAclName])
    {
        [result setValue:[self networkAclName] forKey:@"networkAclName"];
    }
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self networkAclRules])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self networkAclRules] count]; i++) {
            NetworkAclRule* item = [[self networkAclRules] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"networkAclRules"];
    }
    if([self subnetIds])
    {
        [result setValue:[self subnetIds] forKey:@"subnetIds"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.networkAclId = [dictionary objectForKey:@"networkAclId"];
    self.networkAclName = [dictionary objectForKey:@"networkAclName"];
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    NSArray* networkAclRulesArray = [dictionary objectForKey:@"networkAclRules"];
    if(networkAclRulesArray&&![networkAclRulesArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [networkAclRulesArray count];i++)
        {
            NetworkAclRule* item = [[NetworkAclRule alloc]initWithDic:[networkAclRulesArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.networkAclRules = propertyArray;
    }
    self.subnetIds = [dictionary objectForKey:@"subnetIds"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation ModifyRouteTableRulesSpec
-(id) initWithModifyRouteTableRuleSpecs:(NSArray<ModifyRouteTableRules*>*) modifyRouteTableRuleSpecs { 
     self.modifyRouteTableRuleSpecs = modifyRouteTableRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self modifyRouteTableRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self modifyRouteTableRuleSpecs] count]; i++) {
            ModifyRouteTableRules* item = [[self modifyRouteTableRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"modifyRouteTableRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* modifyRouteTableRuleSpecsArray = [dictionary objectForKey:@"modifyRouteTableRuleSpecs"];
    if(modifyRouteTableRuleSpecsArray&&![modifyRouteTableRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [modifyRouteTableRuleSpecsArray count];i++)
        {
            ModifyRouteTableRules* item = [[ModifyRouteTableRules alloc]initWithDic:[modifyRouteTableRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.modifyRouteTableRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation AddNetworkAclRulesSpec
-(id) initWithNetworkAclRuleSpecs:(NSArray<AddNetworkAclRuleSpec*>*) networkAclRuleSpecs { 
     self.networkAclRuleSpecs = networkAclRuleSpecs;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self networkAclRuleSpecs])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self networkAclRuleSpecs] count]; i++) {
            AddNetworkAclRuleSpec* item = [[self networkAclRuleSpecs] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"networkAclRuleSpecs"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    NSArray* networkAclRuleSpecsArray = [dictionary objectForKey:@"networkAclRuleSpecs"];
    if(networkAclRuleSpecsArray&&![networkAclRuleSpecsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [networkAclRuleSpecsArray count];i++)
        {
            AddNetworkAclRuleSpec* item = [[AddNetworkAclRuleSpec alloc]initWithDic:[networkAclRuleSpecsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.networkAclRuleSpecs = propertyArray;
    }
    return self;
}
 @end
@implementation CreateElasticIpSpec
-(id) initWithMaxCount:(NSNumber*) maxCount
      elasticIpAddress:(NSString*)elasticIpAddress
      elasticIpSpec:(ElasticIpSpec*)elasticIpSpec { 
     self.maxCount = maxCount;               
     self.elasticIpAddress = elasticIpAddress;               
     self.elasticIpSpec = elasticIpSpec;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self maxCount])
    {
        [result setValue:[self maxCount] forKey:@"maxCount"];
    }
    if([self elasticIpAddress])
    {
        [result setValue:[self elasticIpAddress] forKey:@"elasticIpAddress"];
    }
    if([self elasticIpSpec])
    {
        [result setValue:[[self elasticIpSpec] dictionary]forKey:@"elasticIpSpec"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.maxCount = [dictionary objectForKey:@"maxCount"];
    self.elasticIpAddress = [dictionary objectForKey:@"elasticIpAddress"];
    self.elasticIpSpec = [[ElasticIpSpec alloc]initWithDic:[dictionary objectForKey:@"elasticIpSpec"]];
    return self;
}
 @end
@implementation VpcPeering
-(id) initWithVpcPeeringId:(NSString*) vpcPeeringId
      vpcPeeringName:(NSString*)vpcPeeringName
      vpcPeeringState:(NSString*)vpcPeeringState
      descriptionValue:(NSString*)descriptionValue
      vpcInfo:(VpcPeeringVpcInfo*)vpcInfo
      remoteVpcInfo:(VpcPeeringVpcInfo*)remoteVpcInfo
      createdTime:(NSString*)createdTime { 
     self.vpcPeeringId = vpcPeeringId;               
     self.vpcPeeringName = vpcPeeringName;               
     self.vpcPeeringState = vpcPeeringState;               
     self.descriptionValue = descriptionValue;               
     self.vpcInfo = vpcInfo;               
     self.remoteVpcInfo = remoteVpcInfo;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcPeeringId])
    {
        [result setValue:[self vpcPeeringId] forKey:@"vpcPeeringId"];
    }
    if([self vpcPeeringName])
    {
        [result setValue:[self vpcPeeringName] forKey:@"vpcPeeringName"];
    }
    if([self vpcPeeringState])
    {
        [result setValue:[self vpcPeeringState] forKey:@"vpcPeeringState"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self vpcInfo])
    {
        [result setValue:[[self vpcInfo] dictionary]forKey:@"vpcInfo"];
    }
    if([self remoteVpcInfo])
    {
        [result setValue:[[self remoteVpcInfo] dictionary]forKey:@"remoteVpcInfo"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcPeeringId = [dictionary objectForKey:@"vpcPeeringId"];
    self.vpcPeeringName = [dictionary objectForKey:@"vpcPeeringName"];
    self.vpcPeeringState = [dictionary objectForKey:@"vpcPeeringState"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.vpcInfo = [[VpcPeeringVpcInfo alloc]initWithDic:[dictionary objectForKey:@"vpcInfo"]];
    self.remoteVpcInfo = [[VpcPeeringVpcInfo alloc]initWithDic:[dictionary objectForKey:@"remoteVpcInfo"]];
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
@implementation Vpc
-(id) initWithVpcId:(NSString*) vpcId
      addressPrefix:(NSString*)addressPrefix
      descriptionValue:(NSString*)descriptionValue
      vpcName:(NSString*)vpcName
      aclIds:(NSArray<NSString*>*)aclIds
      routeTableIds:(NSArray<NSString*>*)routeTableIds
      subnets:(NSArray<Subnet*>*)subnets
      createdTime:(NSString*)createdTime { 
     self.vpcId = vpcId;               
     self.addressPrefix = addressPrefix;               
     self.descriptionValue = descriptionValue;               
     self.vpcName = vpcName;               
     self.aclIds = aclIds;               
     self.routeTableIds = routeTableIds;               
     self.subnets = subnets;               
     self.createdTime = createdTime;               
    return self;
}

-(NSMutableDictionary*) dictionary{
    NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
    if([self vpcId])
    {
        [result setValue:[self vpcId] forKey:@"vpcId"];
    }
    if([self addressPrefix])
    {
        [result setValue:[self addressPrefix] forKey:@"addressPrefix"];
    }
    if([self descriptionValue])
    {
        [result setValue:[self descriptionValue] forKey:@"description"];
    }
    if([self vpcName])
    {
        [result setValue:[self vpcName] forKey:@"vpcName"];
    }
    if([self aclIds])
    {
        [result setValue:[self aclIds] forKey:@"aclIds"];
    }
    if([self routeTableIds])
    {
        [result setValue:[self routeTableIds] forKey:@"routeTableIds"];
    }
    if([self subnets])
    {
        NSMutableArray<NSDictionary*>* arrayDic  = [[NSMutableArray alloc] init];
        for (int i =0 ; i< [[self subnets] count]; i++) {
            Subnet* item = [[self subnets] objectAtIndex:i];
            [arrayDic addObject:[item dictionary]];
        }
        [result setValue:arrayDic forKey:@"subnets"];
    }
    if([self createdTime])
    {
        [result setValue:[self createdTime] forKey:@"createdTime"];
    }
    return result;
}

-(id) initWithDic:(NSDictionary*)dictionary{
    self.vpcId = [dictionary objectForKey:@"vpcId"];
    self.addressPrefix = [dictionary objectForKey:@"addressPrefix"];
    self.descriptionValue = [dictionary objectForKey:@"description"];
    self.vpcName = [dictionary objectForKey:@"vpcName"];
    self.aclIds = [dictionary objectForKey:@"aclIds"];
    self.routeTableIds = [dictionary objectForKey:@"routeTableIds"];
    NSArray* subnetsArray = [dictionary objectForKey:@"subnets"];
    if(subnetsArray&&![subnetsArray isKindOfClass:[NSNull class]])
    {
        NSMutableArray* propertyArray = [[NSMutableArray alloc]init];
        for(int i = 0 ; i< [subnetsArray count];i++)
        {
            Subnet* item = [[Subnet alloc]initWithDic:[subnetsArray objectAtIndex:i]];
            if(item)
            {
                [propertyArray addObject:item];
            }
        }
        self.subnets = propertyArray;
    }
    self.createdTime = [dictionary objectForKey:@"createdTime"];
    return self;
}
 @end
 
 


